#ifndef OUTPUT_DEVICE_VISITOR_INTERFACE_H
#define OUTPUT_DEVICE_VISITOR_INTERFACE_H

class Sphere;
class Ellipsoid;
class Cylinder;
class Cone;
class Paralelepiped;
class Surface;
class Point;
class Line;
class SceneElement;
class Text;

class OutputDeviceVisitorInterface
{
public:
  virtual void visit(const Sphere* o) = 0;
  virtual void visit(const Ellipsoid* o) = 0;
  virtual void visit(const Cylinder* o) = 0;
  virtual void visit(const Cone* o) = 0;
  virtual void visit(const Paralelepiped* o) = 0;
  virtual void visit(const Surface* o) = 0;
  virtual void visit(const Point* o) = 0;
  virtual void visit(const Line* o) = 0;
  virtual void visit(const Text* o) = 0;

  virtual void visit(const SceneElement* ) { std::cerr << "OutputDeviceVisitor: visiting SceneElement" << std::endl; }
};

#endif // OUTPUT_DEVICE_VISITOR_INTERFACE_H
